import { useContext } from "react";
import { Navigate, Outlet } from "react-router-dom";
import { AuthContext, UserRole } from "@/contexts/authContext";

interface PrivateRouteProps {
  allowedRoles?: UserRole[];
}

/**
 * 私有路由组件，用于实现基于角色的访问控制
 */
export default function PrivateRoute({ allowedRoles }: PrivateRouteProps) {
  const { isAuthenticated, userInfo } = useContext(AuthContext);

  // 如果用户未登录，重定向到登录页
  if (!isAuthenticated || !userInfo) {
    return <Navigate to="/login" replace />;
  }

  // 如果指定了允许的角色，且用户角色不在允许列表中，则重定向到首页
  if (allowedRoles && allowedRoles.length > 0 && !allowedRoles.includes(userInfo.role)) {
    return <Navigate to="/" replace />;
  }

  // 权限验证通过，渲染子路由
  return <Outlet />;
}